<?php
   class PublishController extends Yaf\Controller_Abstract{

//       发表文章
       public function linksAction(){

       }
//       发布文章确认
       public function publishSureAction(){
           Yaf\Dispatcher::getInstance()->disableView();
//           获取数据
//           主题
           $topics = $_POST['topics'];
//           内容
           $introduce = $_POST['introduce'];
//           echo $introduce;
//           标签
           $vehicle = $_POST['vehicle'];

//           获取session中的用户id
           session_start();
           $id = $_SESSION['uid'];

//           对用户id进行判断
           if ($id == ""){
               $msg="您还未登陆呢";
               $flag=false;
           }else{
//               如果不等于空进行权限判断
               $type = UsersModel::where('Id','=',$id)->select('type')->get();
               $rtype = json_decode($type,true);
               $retype = $rtype[0]['type'];

               if ($retype=='0' || $retype == '2'){
//                    如果权限够的话就直接发表（发表不用进行审核，只进行一个敏感词过滤）
                   //           定义简单的敏感词数组
                   $list = ['我去','我丢','我靠','我草','我擦','傻逼','傻屌','煞笔','傻狗'];
                   //替换后的数据
                   $newIntro = $this->sensitive($list,$introduce);
                   $newTopic = $this->sensitive($list,$topics);

                   $article =  new ArticleModel();
                   $article->title = $newTopic;
                   $article->content = $newIntro;
                   $article->tags = $vehicle;
                   $article->uid = $id;
                   $article->status = '1';
                   $article->save();

                   $msg = "发表成功，跳转至首页";
                   $flag=true;
               }else{
                   $msg="您的权限不够，暂时不能发表文章";
                   $flag=false;
               }
           }
           $arr=array("msg"=>$msg,"flag"=>$flag);
           echo json_encode($arr,JSON_UNESCAPED_UNICODE );
       }
    //       简单的敏感词过滤，后期可以试着使用数据结构中的前缀树对敏感词进行过滤，空间换时间
    function sensitive($list, $string){
        $count = 0; //违规词的个数
        $sensitiveWord = ''; //违规词
        $stringAfter = $string; //替换后的内容
        $pattern = "/".implode("|",$list)."/i"; //定义正则表达式
        if(preg_match_all($pattern, $string, $matches)){ //匹配到了结果
            $patternList = $matches[0]; //匹配到的数组
            $count = count($patternList);
            $sensitiveWord = implode(',', $patternList); //敏感词数组转字符串
            $replaceArray = array_combine($patternList,array_fill(0,count($patternList),'*')); //把匹配到的数组进行合并，替换使用
            $stringAfter = strtr($string, $replaceArray); //结果替换
        }
        return $stringAfter;
    }

   }